在這個 30 天的系列文章中,我們將詳細探討 Django Ninja 的基礎實作,透過文字教學與範例專案的程式碼,帶你一步一步熟悉這個強大而靈活的 Django API 開發框架。
作為 Django 生態系統中的新星(誕生於 2020 年),Django Ninja 融合了 Django 的穩定性和 FastAPI 的現代特性——Python 的型別提示(透過 Pydantic 實現)。這種強強結合,為開發者提供了一個健全、高效、直觀的 API 開發體驗。
不論你是經驗豐富的 Django 開發者,還是剛進入 API 開發領域的新手,這個系列都會為你提供實用的 Django Ninja 實戰經驗與技巧。
我們將從背景介紹、基礎概念開始,逐步深入探討 Django Ninja 的每個部分,幫助你快速掌握這個現代化 API 開發工具。
本系列的定位是「入門級」,但這裡所謂的入門,指的是 Django Ninja 框架的入門。
所以,要充分利用好教學內容與範例專案程式碼,仍建議讀者具備以下技能:
具備這些技能將幫助你更好地理解和應用本系列的內容。如果你對某些概念不太熟悉,也不用擔心,我們會在必要時進行一定的講解。
本系列「特別適合」以下讀者。你不妨看看自己屬於哪一種。
想了解 Python 後端開發,尤其是如何建立高品質的 API。
無論是全端或後端,所有 Django 開發者,都是本系列的目標讀者。
對於已有 FastAPI 開發基礎的讀者,要上手 Django Ninja 應該是易如反掌🤚
Django Ninja 提供了簡潔、快速的 API 開發方式。
其中的一大賣點是「透過 Pydantic 與 Python type hints 自動生成 API 文件」,讓你再也不用苦惱於如何撰寫優質的 API 文件。
對於非 Python 開發者,想要在一些小專案實作規模不大的功能,Django Ninja 提供了極具吸引力的選擇。
我曾在〈《強健的 Python》筆記(一)Type Hints 的成本與挑戰〉提到:
寫 Django Ninja(或 FastAPI),你本來就要書寫大量 type hints,來產生正確、合理的 API 文件。那要求為專案的其餘部分,比如自定義的函式、類別加上 type hints,阻力相對就小得多。
在我看來,這類採用了 Pydantic 框架所帶來的效應,就像腳踏車的輔助輪,在剛起步使用 type hints 時,有著明顯的正面引導效果。
Python type hints 如果缺乏實際應用場景,往往會讓人感到寫這些東西很辛苦,甚至有點多餘,這是人之常情。
而最好的應用場景,就是工具本身就要求你一定要寫,並且你能夠從中直接獲得效益——Django Ninja 正是如此。
在本系列中,我們將專注於 Django Ninja 的核心功能和實際應用,目的是幫助開發者快速上手並實作 API。
為了確保內容的實用性和針對性,我們對內容做出了一些取捨:
了解完系列的整體方向後,接下來,我將介紹本系列的架構與章節安排,讓你從一開始就知曉每個章節的重點,並了解如何循序漸進地學習 Django Ninja 的核心功能。
在下一篇文章中,我會具體介紹每個章節的主軸與重點,幫助你掌握整個系列的內容安排,為後續學習做好準備。
本文同步發表於我的部落格——Code and Me
下忍前來報到 (遲到了三天)
本身從未使用過 Django 系列框架,但對 FastAPI 還算熟悉,也很喜歡 Python 的 Type Hints 功能,帶來了數不盡的方便,現在看到沒寫 Type Hints 的 code 都覺得難讀得要命,要傳入什,回傳什都不清楚。
回歸正題,我第一次知道原來 Django 體系下居然還有分派系?! 第一次聽到這個 Django Ninja ,從本文中的介紹聽起來整體設計理念跟 FastAPI 應該很像,希望我也能很快入手 😀,期望這 30天能跟著作者學到許多東西!
本來沒有派系的,只有 DRF 一家獨大(存在了超過 10 年),直到 Django Ninja 的出現,哈哈,真該感謝 FastAPI
FastAPI 其實是 Starlette(也是 Encode 團隊開發)+ Pydantic,而 Django Ninja 就是 Django + Pydantic
我之所以離不開 Django 生態系,主要還是因為它的 ORM,我太喜歡 Django ORM 了
FastAPI 的作者也有做個結合 pydantic + SQLAlchemy 的套件叫 SQLModel,不知道你有沒有用過 SQLAlchemy 或 SQLModel?
如果有的話也想知道這兩個跟 Django ORM 的差別或優缺點。
因為不管是 FastAPI 或者 Ninja 都基於 pydantic,所以我也好奇 SQLModel 能不能有好用的 ORM 功能。
我剛轉職的時候,是用 Flask 寫了一個 side project 來求職,那時有用過 SQLAlchemy,後來就沒碰過了
我想 SQLAlchemy 和 Django ORM 這種功能強大的 ORM,能力上都大同小異——都很全面了
我偏好 Django ORM 主要是因為它的語法讓我覺得很優雅、有美感,沒有什麼很特別的理由XD